//import java.util.*;
//public class Main {
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        String str = sc.nextLine();
//        int count=0;
//        for (int i = 0; i < str.length(); i++) {
//            if (str.charAt(i) == '"') {
//                do{
//                    i++;
//                }while(str.charAt(i)!='"');
//
//            }
//            if(str.charAt(i)==' '){
//                count++;
//            }
//        }
//        System.out.println(count+1);
//        for(int j=0;j<str.length();j++){
//            if(str.charAt(j)=='"'){
//                do{
//                    j++;
//                    if(str.charAt(j)!='"'){
//                        System.out.print(str.charAt(j));
//                    }
//                }while(str.charAt(j)!='"');
//                j++;
//            }
//            System.out.print(str.charAt(j));
//            if(str.charAt(j)==' '){
//                System.out.println();
//            }
//
//
//        }
//    }
//}

//
//import java.util.*;
//public class Main {
//    public static void main(String[] args) {
//        Scanner sc = new Scanner(System.in);
//        String str = sc.nextLine();
//        int count=0;
//        for (int i = 0; i < str.length(); i++) {
//            if (str.charAt(i) == '"') {
//                do{
//                    i++;
//                }while(str.charAt(i)!='"');
//
//            }
//            if(str.charAt(i)==' '){
//                count++;
//            }
//        }
//        System.out.println(count+1);
//        int n=1;
//        for(int i=0;i<str.length();i++){
//            if(str.charAt(i)=='"'){
//                n=n^1;
//            }
//            if(str.charAt(i)!='"'&&str.charAt(i)!=' '){
//                System.out.print(str.charAt(i));
//            }
//            if(str.charAt(i)==' '&&n==0){
//                System.out.print(str.charAt(i));
//            }
//            if(str.charAt(i)==' '&&n==1){
//                System.out.println();
//            }
//        }
//    }
//}


import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] step = new int[m + 1];
        for (int i = 0; i < m + 1; i++) {
            step[i] = Integer.MAX_VALUE;
        }
        step[n] = 0;
        for (int i = n; i < m; i++) {
            if (step[i] == Integer.MAX_VALUE) {
                continue;
            }
            //求i的约数
            List<Integer> list = div(i);
            for (int j : list) {
                //j代表此时我们一步可以条几个台阶
                if (i + j <= m && step[i + j] != Integer.MAX_VALUE) {
                    step[i + j] = Math.min(step[i + j], step[i] + 1);
                } else if (i + j <= m) {
                    step[i + j] = step[i] + 1;
                }
            }
        }
        if (step[m] == Integer.MAX_VALUE) {
            System.out.println(-1);
        } else {
            System.out.println(step[m]);
        }
    } public static List<Integer> div(int num) {
        List<Integer> list = new ArrayList<>();
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                list.add(i);
                if (num / i != i) {
                    list.add(num / i);
                }
            }
        }
        return list;
    }
}